Germán Gómez Vargas
Email:gagomezv@gmail.com
23 de mayo de 2020
En tiempos de Coronavirus se hace relevante que el contacto físico entre personas se reduzca a su mínima expresión. Los datos de ruteo de vehiculos proporcionados por SimpliRoute permiten extraer información relevante para tomar acciones que reduzcan este tiempo en el cual el virus puede ser transmitido entre quien entrega y quien recibe un producto. Con métodos de visualización de datos y machine learning se encuentra que el tiempo de servicio se va incrementando a medida que se avanza en la ruta de entrega, en general las últimas entregas presentan un mayor tiempo de contacto que las primeras. Así mismo, el peso del producto y la habilidad requerida para la entrega juegan un rol capital en la duración de la visita. El servicio de Aprendizaje Automático o AutoML de Azure Machine Learning nos provee de una herramienta para explorar una gran variedad de algoritmos, junto con sus parámetros, para poder estimar el tiempo de servicio como función de las características de la ruta y el paquete. Se concluye del análisis realizado que se puede obtener una buena estimación del tiempo de contacto en la entrega, basandose principalmente en el tiempo que se tarda en llegar a la visita, la habilidad requerida para realizarce y el peso del producto. Se recomienda para reducir el tiempo de servicio que se programen las rutas con un máximo de 20 entregas por día y que de ellas, las de mayor peso se hagan al comienzo del recorrido.
Entre las múltiples dificultades que se presentan durante el ruteo de vehículos, un factor importante en la definición de las rutas corresponde al tiempo que necesitará cada vehículo en realizar una entrega de productos en cada visita. Llamamos a este tiempo "Tiempo de servicio" y, llevándolo al contexto mundial actual, se puede ver como el tiempo que las personas entran en exposición con otras, dentro de una ruta.
El tiempo de servicio es un dato input para SimpliRoute , y tiene valor significativo en la formación de rutas. Actualmente, los tiempo de servicios los entregan los mismos clientes que utilizan la plataforma de SimpliRoute, que por lo general, son tiempos que ellos estiman en base a la experiencia de los choferes o ruteadores. Sin embargo, normalmente estos tiempos no calzan con la realidad, lo cual genera que haya momentos donde las ventanas de tiempo no se cumplen, o peor, donde haya que esperar hasta poder atender una visita en la ruta, incrementando la exposición de quienes realizan los despachos.
Esta situación nos ha motivado a realizar un estudio que nos permita estimar de la mejor manera posible el tiempo de servicio que podría tardar un móvil en cada visita. Para esto, contamos con múltiples registros de tiempos de servicio reales conjuntamente con otras variables de las rutas, que podrían o no, influenciar estos tiempos. Quisiéramos comprobar si es posible analizar estos datos con el fin de obtener información nueva que nos permita mejorar nuestra manera de generar rutas. Favoreciendo así la eficiencia de los negocios, y la seguridad y confort de todas las personas.
Con este trabajo, queremos :
Los datos a estudiar están entregados en formato .xlsx y corresponden a registros de tiempos de servicio conjuntamente con otra información asociada a las rutas. Se cuenta con 2 tipos de set: Un set Train que servirá para entrenar el modelo, y un set Test que nos permitirá evaluar la calidad de la estimación.
Para realizar esta labor, no hay restricciones en tipo de modelo usado o lenguaje. Todas la asunciones deben ser explicitadas, igualmente que la metodología utilizada.
Primero cada una de las hojas del archivo Excel es transformado en formato .csv y cargado en el servicio Azure Machine Learning para su análisis.
Tenemos 19 campos tanto en la base de training como de testing, la diferencia es que en el de testing el tiempo de servicio no tiene datos.
Cada registro de cualesquiera de las bases representa un trayecto de una ruta. En la tabla Tabla 1 se presenta el diccionario de datos de las características de cada entrega.
Figura 1a. Distribución de las 73858 entregas en los tres tipos de edificio donde las cuatro depósitos prestan servicio. Aunque principalmente se entrega en bodegas, los otros dos tipos de edificios son significativos.
Figura 1b. Distribución de las 73 858 entregas en los diferentes skills requeridos para realizarlos. Las entregas que no requieren skill conforman la mitad de las entregas que se realizan. Ultra pesado, de seguridad y congelados tienen similar distribución, alrededor del 10%.
Figura 1c. Se utilizan tres tipos de vehículos para hacer las entregas, el principal tipo de vehículo utilizado es el CATNP39A.
Figura 2. Para profundizar en que tipo de edificio se requieren los diferentes tipos de skill se presenta la distribución de las 73858 entregas por skill y en cada skill la distribución de tipo de edificio. En los tres tipos de edificio se requieren similares skills de entrega.
Graficamos como se distribuyen algunos campos numéricos como función de dos campos categóricos, la skill requerida para la entrega y el típo de edificio en el cual se hace la entrega. También se consideraron los otros campos categóricos pero solo para el típo de edificio se observa una variación en el tiempo de servicio.
Se utilizan diagramas de caja para poder visualizar las distribuciones de las variables numéricas en función de skill y típo de edificio donde se entrega. Los diagramas de caja son una forma estandarizada de mostrar la distribución de datos basada en un resumen de cinco números ("mínimo", primer cuartil (Q1), mediana, tercer cuartil (Q3) y "máximo"). La Figura 3. muestra un ejemplo de una distribución normal representada en un diagrama de caja.

Figura 3. Comparación de un diagrama de caja de una distribución casi normal y una función de densidad de probabilidad (pdf) para una distribución normal
Figura 4a. Diagramas de cajas de la distancia acumulada en la ruta en los diferentes skills requeridos para la entrega y separado por tipo de edificio donde se realiza. No se observa una diferencia significativa en la distancia acumulada, con una mediana de $59.8$ km, en las diferentes aperturas. La visualización es interactiva y se pueden sacar los tipos de edificio.
Figura 4b. Diagramas de cajas de el tiempo de arribo para hacer la entrega en los diferentes skills requeridos para la entrega y separado por tipo de edificio donde se realiza. No se observa una diferencia significativa en el tiempo de arribo, con una mediana de $3.2$ horas en las diferentes aperturas. La visualización es interactiva y se pueden sacar los tipos de edificio.
Figura 4c. Diagramas de cajas de el volumen del paquete en los diferentes skills requeridos para la entrega y separado por tipo de edificio donde se realiza. No se observa una diferencia significativa en el volumen por tipo de edificio, si separamos por el skill. Pero al separar por skill se hace evidente la diferencia de volumen de los ultra pesados, con una mediana de $435$ unidades de volumen, en comparación con las otras skills donde se tiene una mediana de $129$ unidades de volumen. La visualización es interactiva y se pueden sacar los tipos de edificio.
Figura 4d. Diagramas de cajas de el peso del paquete en kilogramos en los diferentes skills requeridos para la entrega y separado por tipo de edificio donde se realiza. No se observa una diferencia significativa en el peso por tipo de edificio, pero si se observa diferencia en el skill requerido, siendo de mayor peso los de skill ultra pesado con una mediana de $750$ kg en comparación con las otras skills donde se tiene una mediana de $249$ kg. La visualización es interactiva y se pueden sacar los tipos de edificio.
Figura 4e. Diagramas de cajas de el orden de la ruta en los diferentes skills requeridos para la entrega y separado por tipo de edificio donde se realiza. No se observa una diferencia significativa el número de entregas diarias por skill y edificio. La visualización es interactiva y se pueden sacar los tipos de edificio.
Figura 4f. Diagramas de cajas de el tiempo de servicio en minutos en los diferentes skills requeridos para la entrega y separado por tipo de edificio donde se realiza. Se observan diferencias significativas en el servicio por skill y entre tipos de edificio. La visualización es interactiva y se pueden sacar los tipos de edificio.
Los coeficientes de correlación se usan en estadísticas para medir qué tan fuerte es una relación entre dos variables. Existen varios tipos de coeficientes de correlación: la correlación de Pearson (también llamada R de Pearson) es un coeficiente de correlación comúnmente utilizado en la regresión lineal.
Es importante recalcar que la correlación no puede diferenciar entre variables dependientes y variables independientes. En otras palabras; la correlación no indica causalidad, solo informa si hay una relación.
La tabla 3 presenta la correlación entre las variables numéricas. Se observan correlaciones significativas entre las variables esperadas, como el tiempo de arribo y la distancia acumulada. Para el tiempo se servicio no se obtienen correlaciones mayores a 0.5 con ninguna otra variable.
Luego de investigar diferentes filtros donde se pudiera obtener mayor correlación con el tiempo de servicio, se encontró que con el skill requerido para la entrega se obtiene el mayor valor. En particular con el skill de seguridad, donde se obtiene una correlación de 0.6, en todos los otros skills la correlación es similar. La tabla 4 muestra estos resultados y en la figura 5 se observa la dispersión entre el tiempo de arribo y el de servicio. La correlación entre estas dos variables se explica porque despues de $5$ horas en la ruta no se obtienen tiempos de servicio menores a $19$ minutos, pero si superiores a $26$ minutos, los cuales no se obtienen en las primeras $5$ horas de ruta.
Una correlación útil que aparece es la de el tiempo de arribo a la entrega y el orden de la ruta, porque nos informa de cuánto tiempo se tardan en realizar cierta cantidad de entregas por día. Por ejemplo, el $75$% de las entregas número $20$ se hacen antes de $7$ horas y tienen un tiempo de servicio de máximo 30 minutos.
Figura 5. Tiempo de servicio vs. tiempo de arribo para las entregas que requieren el skill de seguridad. Los puntos azules representan cada entrega y la linea roja es un ajuste lineal de los datos que presentan una correlación de 0.6. Esta correlación se da principalmente porque después de 5 horas el tiempo de servicio se incrementa. Se observa el mismo comportamiento en los diferentes skills, pero en seguridad es donde está más acusado.
Para visualizar geográficamente la posición de los depósitos de inicio y sus zonas de entrega graficamos un mapa de contornos donde las curvas de nivel representan las zonas donde más se hacen entregas.
De cada uno de los depósitos 1 y 2 salen 960 rutas, de los restantes 4 y 3 salen 840, ver tabla 5.
En la figura 6 se presenta un mapa que emerge de los datos de forma cuadrada con los cuatro depósitos formando un rectangulo, sus zonas de entrega, aunque se solapan levemente, están visiblemente demarcadas. De el depósito 4 (violeta) se hacen entregas en zonas más localizadas, mientras de el depósito 3 (verde) se reparte a puntos más uniformes.
Figura 6 Mapa de contornos donde las curvas de nivel representan las zonas donde más se hacen entregas. Existen cuatro zonas demarcadas que se diferencian el mapa por color, los puntos negros indican la posición de los depósitos desde donde parten las rutas.
Para visualizar las rutas se intentaron diferentes métodos. A continuación se muestran dos que ayudaron a dar mayor información sobre la inferencia del tiempo de servicio.
La definición de Wikipedia:
"Las coordenadas paralelas son una forma común de visualizar geometría de alta dimensión y analizar datos multivariados.
Para mostrar un conjunto de puntos en un espacio n-dimensional, se dibuja un fondo que consta de n líneas paralelas, típicamente verticales e igualmente espaciadas. Un punto en el espacio n-dimensional se representa como una polilínea con vértices en los ejes paralelos; La posición del vértice en el eje i-ésimo corresponde a la coordenada i-ésima del punto.
Esta visualización está estrechamente relacionada con la visualización de series de tiempo, excepto que se aplica a datos donde los ejes no corresponden a puntos en el tiempo y, por lo tanto, no tienen un orden natural. Por lo tanto, diferentes disposiciones de eje pueden ser de interés."
https://en.wikipedia.org/wiki/Parallel_coordinates
Metodología
Seleccionamos de forma aleatorea un día y un vehiculo para visualizar su ruta del día y así podemos crear hipótesis del comportamiento de las rutas. Luego vemos lo que hicieron 10 vehiculos ese mismo día, para observar patrones con mayor estadística y poder corroborar, o no, las hipótesis hechas con una sola ruta.
La figura 7a Es una visualización de una ruta donde se escogen un vehículo y un día de entrega de forma aleatoria. Se observa que en una ruta las entregas pueden requerir de todos los skills. La parte de abajo de la figura 7a tiende a ser más roja (mayor tiempo de servicio) que la superior, la cual tiende a ser verde (menor tiempo de servicio). Esto coincide con el orden de entrega, las primeras en la parte superior y las últimas al final del día. También se observa en la misma figura que en una ruta se entrega a diferentes tipos de edificios. Estas hipótesis se analizan en la figura 7b donde se visualizan las rutas hechas el mismo día por diez vehículos más. Con el puntero sobre la coordenada Route_Order de la figura 7b se apunta hacia segmentos partículares de tiempo de servicio. Se confirma la hipótesis de que al final de la ruta se tiene mayor tiempo de servicio. Así mismo se puede observar en la figura 7b que el tipo de edificio donde se hace la entrega es indistinto del orden de entrega o el skill.
En la figura 8a el orden en cada coordenada lo determina el valor numérico de la misma. En esta visualización de una ruta se muestra toma el mismo vehiculo y día de la figura 7a. Se observa que a medida que se avanza en el orden de la ruta, el tiempo de arribo va aumentando, entre las dos primeras coordenadas las lineas se desvían de ser horizontalmente paralelas cuando tienen un mayor tiempo de servicio. La principal hipotesis que se plantea con esta visualización es que los paquetes más pesados son los que mayor tiempo de servicio requieren. Pero cuando se entregan en la mañana generan menor tiempo de servicio. En la figura 8b analizamos esta hipótesis. La figura 8b es la visualización de las rutas de diez vehículos diferentes en el mismo día de entrega de la figura 8a. Para indagar en las hipótesis podemos inspeccionar las diferentes líneas y observar que efectivamente las entregas de mayor peso son las que requieren mayor tiempo de servicio. Las entregas de mayor peso se entregan indistintamente en cualquier parte del orden de ruta, pero efectivamente en la parte de abajo (primeras entregas) las entregas más pesadas tienden a ser amarillas, mientras las de la parte de arriba (últimas entregas de la ruta) son más rojas. Se comprueba que entregar en la mañana los más pesados tiende a reducir el tiempo de servicio.
Para observar patrones en la ruta se presenta la animación de la figura 9 donde se grafica el tiempo de servicio como función del orden de la ruta y se evoluciona con el día de la entrega. Esta gráfica nos ayuda a visualizar que, luego de 20 entregas el tiempo de servicio es mayor, pero que no todos los días los vehiculos tienen más de 20 entregas programadas. Por simplicidad de la animación se escogieron cuatro vehiculos de forma para representar. Cabe recalcar, como ya se mencionó anteriormente, que el $75$% de las entregas número $20$ se hacen antes de $7$ horas y tienen un tiempo máximo de servicio de 30 minutos. Luego podremos hacer la misma visualización con los datos de test, usando el modelo de predicción de tiempo de servicio. Link a las curvas estimadas de los mismos 4 vehiculos.
Como los datos se observan limpios pasamos a usar AutoML de Azure para encontrar el modelo y sus parametros que mejor predigan el tiempo de servicio. Así mismo, el servicio de AutoML nos ofrece un modulo de explicabilidad donde nos presenta las variables más relevantes que encuentra para hacer la predicción
Azure AutoML es un servicio de la nube de Microsoft, quienes lo definen como:
"El aprendizaje automático automatizado, también conocido como ML automatizado o AutoML, es el proceso de automatización de las tareas iterativas que requieren mucho tiempo del desarrollo del modelo de aprendizaje automático. Permite a los científicos de datos, analistas y desarrolladores crear modelos de ML con alta escala, eficiencia y productividad, todo mientras mantiene la calidad del modelo. El ML automatizado se basa en un avance de nuestra división de Microsoft Research."
El paper donde se sustenta el método es Probabilistic Matrix Factorization for Automated Machine Learning Nicolo Fusi, Rishit Sheth, Huseyn Melih Elibol (2018).
La tabla 6 presenta la correlación Spearman de los 14 mejores algorítmos encontrados por AutoML. El servicio permite escoger la métrica que se usa para rankear los algoritmos, se escogió la correlación Spearman pero es equivalente a la de Pearson presentada en la sección 1.5. El mejor modelo encontrado es un Stack Ensemble que consiste en considerar weak learners heterogéneos, los que aprenden en paralelo y los combina entrenando un metamodelo para generar una predicción basada en las diferentes predicciones de los modelos débiles, una lectura para entender este típo de algoritmos se encuentra aquí.
La figura 10 presenta los resultados del análisis de explicabilidad del modelo stack ensamble encontrado por AutoML. El gráfico confirma lo que se venia observando en las visualizaciones de datos con respecto a las características de las entregas que influyen en el tiempo de servicio.
El mejor modelo que encuentra AutoML lo descargamos en formato .pkl para realizar la predicción de los datos de test.
Para hacer la estimación del tiempo de servicio con el modelo requerimos ingresar los campos que se utilizaron en su construcción.
camposRequeridosPrediccion=['ID_Visit', 'Planned_Day', 'ID_Route', 'ID_Store', 'ID_Vehicle',
'Route_Order', 'Store_X', 'Store_Y', 'ID_Depot', 'Depot_X', 'Depot_Y',
'Dda_kg', 'Dda_Vol', 'Skill', 'Building_Type', 'Acum Distance',
'Arrival_Time', 'Vehicle_Type']
Realizamos la estimación del tiempo de servicio tanto para los datos Train como para los Test:
simpliRoute['Service_Time_Prediction']=model.predict(simpliRoute[[camposRequeridosPrediccion]])
simpliRouteTest['Service_Time_Prediction']=model.predict(simpliRouteTest[[camposRequeridosPrediccion]])
Con la estimación en la base de Train hacemos la gráfica de la figura 11 y corroboramos que el modelo hace una buena estimación del tiempo de servicio.
Creamos dos variables para entender las predicciones del modelo:
Diferencia del tiempo de servicio real y el predicho, nos sirve para estimar los minutos de diferencia que se obtienen con la estimación del tiempo de servicio. Se encuentra que las estimaciones del tiempo de servicio, tipicamente tienen una discrepancia de $\pm 1.3$ minutos con el valor real.
simpliRoute['Service_Time_diff']=simpliRoute['Service_Time']-simpliRoute['Service_Time_Prediction']
diferencia porcentual: es el tiempo de servicio real menos el predicho sobre el tiempo real. No tiene unidades e indica en forma de fracción la desviación del tiempo de servicio estimado con el real. La figura 12 muestra esta cantidad como función del tiempo de servicio. Aunque se obtienen diferencias de hasta el $500$% para tiempos de servicio de un minuto, el $80$% de los tiempos de servicios son mayores a once minutos, desde donde la discrepancia es menor al 10% entre el valor estimado con el modelo y el real.
simpliRoute['Service_Time_diff_percent']=100*np.abs((simpliRoute['Service_Time']-simpliRoute['Service_Time_Prediction']))/simpliRoute['Service_Time']
Utilizamos el mismo método de visualización de rutas para los datos de la base testing usando el tiempo de servicio estimado con el modelo de stack ensemble. Analizando una ruta aleatoria en un día aleatorio vemos el mismo comportamiento que veiamos con los datos del archivo de training: los tiempos de servicio mayores se tienen al entregar los paquetes más pesados y va aumentando a medida que se avanza en la ruta, también se observa que sobre 20 entregas se tiene el mayor tiempo de servicio.
La Visualización de la ruta de un vehiculo en un día particular de la base de testing con el tiempo de servicio estimado con el mejor modelo de Machine Learning entregado por AutoML. Las caracteristicas observadas en las figuras 7 y figuras 8 también se observan en las figuras 14 y figuras 15, dando soporte al buen comportamiento de la estimación del modelo.
Graficamos las rutas para los mismos vehiculos de la figura 9 todos los días de la base testing usando la estimación del tiempo de servicio hecha con el modelo Stack Ensemble. Se observa un comportamiento similar al de los datos reales en las trazadas de las curvas Link a las curvas reales del vehiculo 4.
En tiempos de Coronavirus se hace relevante que el contacto físico entre personas se reduzca a su mínima expresión. Los datos de ruteo de vehiculos proporcionados por SimpliRoute permiten extraer información relevante para tomar acciones que reduzcan este tiempo en el cual el virus puede ser transmitido entre quien entrega y quien recibe un producto. Con métodos de visualización de datos y machine learning se encuentra que el tiempo de servicio se va incrementando a medida que se avanza en la ruta de entrega, en general las últimas entregas presenta un mayor tiempo de contacto que las primeras. Así mismo, el peso del producto y la habilidad requerida para la entrega juegan un rol capital en la duración de la entrega en cada visita. El servicio de Aprendizaje Automático ó AutoML de Azure Machine Learning nos provee de una herramienta para poder explorar una gran variedad de algoritmos, junto con sus parámetros, para poder estimar el tiempo de servicio como función de las características de la ruta y el paquete. En base a lo que se queria inicialmente con este análisis podemos concluir:
Algunas caracteristicas analizadas permiten estimar el tiempo de servicio en las entregas, principalmente el tiempo de arribo, el skill y el peso del paquete.
AutoML encuentra un conjunto de modelos que pueden estimar en buena medida el tiempo de servicio, entre estos el mejor encontrado es un Stack Ensamble, que consiste en considerar weak learners heterogéneos, los que aprenden en paralelo y los combina entrenando un metamodelo para generar una predicción basada en las diferentes predicciones de los modelos débiles. Se obtiene una correlacion Spearman de 0.95, una variación explicada de 0.91 y un score $R^2$ de 0.91. Alrededor de tiempos de servicios de 15 minutos (los más comunes) la incertidumbre en la predicción es típicamente de 1 y 1.5 minutos. El modelo tiende a predecir más tiempo de servicio para las primeras entregas de la ruta y menos para las del final, pero en general tiene el mismo comportamiento con el resto de variables.
Dada la cantidad de datos y lo entremezclados que están es posible perderse y no ver patrones pero con la técnología de inteligencia artificial los podemos resaltar fácilmente. Un correcto análisis de los datos permite descubrir patrones y poder estimar futuros eventos con bajo nivel de incertidumbre, hace que las soluciones que se construyan de cara al cliente tengan mayor valor.
Las últimas entregas de la ruta son las que más tiempo de servicio tardan, junto con las de mayor peso. Se recomienda, para reducir el tiempo de servicio a máximo 30 minutos, hacer que las rutas no tengan más de 20 entregas por día y que los paquetes más pesados sean planificados al comienzo de la ruta.
Germán Gómez Vargas
Email:gagomezv@gmail.com
23 de mayo de 2020